/**
 * 
 */
package br.com.sglf.persistence;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;

import br.com.sglf.domain.Usuario;
import br.com.sglf.support.Dao;

/**
 * @author jackmaruno
 *
 */
public class UsuarioDao extends Dao<Usuario> {
	 
	/* (non-Javadoc)
	 * @see persistence.UsuarioDao#findByLoginAndSenha(java.lang.String, java.lang.String)
	 */
	public Usuario findByLoginAndSenha(String login, String senha){ 
        Criteria criteria = createCriteria();  
		criteria.add(Restrictions.eq("login", login));   
		criteria.add(Restrictions.eq("senha", senha));    

		List<Usuario> lista = findByCriteria(criteria); 
		Usuario usuario = null;
		if(lista.size() > 0){
			usuario = lista.get(0);
		}
		return usuario;
	}
	

	/* (non-Javadoc)
	 * @see persistence.UsuarioDao#findByNomeAndLogin(java.lang.String, java.lang.String)
	 */
	public List<Usuario> findByNomeAndLogin(String nome, String login){ 
        Criteria criteria = createCriteria();
		
		if(isNotNull(nome)){ 
			criteria.add(Restrictions.like("nome", nome, MatchMode.ANYWHERE).ignoreCase()); 
		}
		if(isNotNull(login)){ 
			criteria.add(Restrictions.like("login", login, MatchMode.ANYWHERE).ignoreCase()); 
		} 
		List<Usuario> lista = (List<Usuario>) findByCriteria(criteria); 
		
		return lista;
	} 
	
	/**
	 * @param nome
	 * @param login
	 * @param email
	 * @param cpf
	 * @param perfil
	 * @return
	 */
	public List<Usuario> findByParametros(String nome, String login, String email, String cpf, String perfil){ 
        Criteria criteria = createCriteria();
		
		if(isNotNull(nome)){ 
			criteria.add(Restrictions.like("nome", nome, MatchMode.ANYWHERE).ignoreCase()); 
		}
		if(isNotNull(login)){ 
			criteria.add(Restrictions.like("login", login, MatchMode.ANYWHERE).ignoreCase()); 
		} 
		if(isNotNull(email)){ 
			criteria.add(Restrictions.like("email", email, MatchMode.ANYWHERE).ignoreCase()); 
		} 
		if(isNotNull(cpf)){ 
			criteria.add(Restrictions.like("cpf", cpf, MatchMode.ANYWHERE).ignoreCase()); 
		} 
		if(isNotNull(perfil)){ 
			criteria.add(Restrictions.like("perfil", perfil, MatchMode.ANYWHERE).ignoreCase()); 
		}  
		List<Usuario> lista = (List<Usuario>) findByCriteria(criteria); 
		
		return lista;
	}
 
 
	/* (non-Javadoc)
	 * @see persistence.UsuarioDao#findByLogin(java.lang.String)
	 */
	public Usuario findByLogin(String login){  
        Criteria criteria = createCriteria();
		criteria.add(Restrictions.eq("login", login));  
		List<Usuario> lista = findByCriteria(criteria); 
		Usuario usuario = null;
		if(lista.size() > 0){
			usuario = lista.get(0);
		} 
		return usuario;
	}
}
